import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)//声明
import routes from "./routes";
/*
 路由点击多次，而参数没有变化，会报警告NavigationDuplicated
         原因是因为路由3.1.0之后引入promise用法，如果你使用的时候没有对promise进行处理，就报警告
            1 降低vue-router的版本
            2 使用push或者replace的时候传递成功或者失败的回调
            3 封装源码   这个解决办法优秀
* */
const originPush=VueRouter.prototype.push//把原本的push函数地址存起来,防止后面要用
const originReplace=VueRouter.prototype.replace //把原本的push函数地址存起来,防止后面要用
VueRouter.prototype.push=function (location,resolved,rejected){
    if (resolved===undefined&&rejected===undefined){
        return originPush.call(this,location).catch(()=>{})
    }else {
        return originPush.call(this,location,resolved,rejected)
    }
}
VueRouter.prototype.replace=function (location,resolved,rejected){
    if (resolved===undefined&&rejected===undefined){
        return originReplace.call(this,location).catch(()=>{})
    }else {
        return originReplace.call(this,location,resolved,rejected)
    }
}


export default new VueRouter({
    // mode:'history',//不带#
    routes,
    scrollBehavior (to, from, savedPosition) {
        return { x: 0, y: 0 }
    }
})